//package com.hzjq.blastlib
//
//import android.content.Intent
//import android.os.Bundle
//import android.os.Environment
//import android.text.TextUtils
//import android.view.View
//import androidx.appcompat.app.AppCompatActivity
//import com.alibaba.fastjson.JSONObject
//import com.amap.api.maps.offlinemap.OfflineMapActivity
//import com.hzjq.core.util.BlastLog
//import com.hzjq.data.base.UploadBlastMode
//import com.hzjq.data.callback.*
//import com.hzjq.data.entity.*
//import com.hzjq.data.file.encrypt.DebugEncryptConvertor
//import com.hzjq.data.hzjq.entity.AppDataEntity
//import com.hzjq.data.hzjq.entity.CapRecordEntity
//import com.hzjq.data.hzjq.entity.DeviceInfoEntity
//import com.hzjq.data.hzjq.entity.UserEntity
//import com.hzjq.data.minbao.entity.AuthEntity
//import com.hzjq.lib.BlastKool
//import com.hzjq.lib.callback.LoginSurplusTimeCallback
//import com.hzjq.lib.callback.NettedCallback
//import com.hzjq.lib.callback.ResultCallback
//import com.hzjq.lib.cap.bean.CommResult
//import com.hzjq.lib.cap.bean.ReadResult
//import com.hzjq.lib.cap.bean.ScanResult
//import com.hzjq.lib.cap.bean.VersionResult
//import com.hzjq.lib.cap.netted.NettedStatus
//import com.hzjq.lib.checker.CheckError
//import com.hzjq.lib.checker.ProgressCheckError
//import com.hzjq.lib.checker.QuickChecker
//import com.hzjq.lib.config.param.BlastLoader
//import com.hzjq.lib.config.param.BlastParams
//import com.hzjq.lib.loader.DBLoader
//import com.tuanbiao.AssetsFileKool
//import io.reactivex.functions.Consumer
//import kotlinx.android.synthetic.main.activity_main.*
//import java.io.File
//
//class MainActivity : AppCompatActivity() {
//
//    private var planId = ""
//
//    override fun onCreate(savedInstanceState: Bundle?) {
//        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_main)
//        mapLayout.onCreate(savedInstanceState)
//        BlastKool.loader().location().start()
//        setDBConvertor()
//        setLoginSurplusTimeCallback()
//        setCapAddDelay()
//    }
//
//
//    /**
//     * 登录时间剩余回调
//     */
//    private fun setLoginSurplusTimeCallback(){
//        BlastKool.setLoginSurplusTimeCallback(object : LoginSurplusTimeCallback {
//            override fun onLoginSurplusTime(surplusTime: String) {
//                loginResult.text = "剩余时间:$surplusTime"
//            }
//        })
//    }
//
//    /**
//     * 设置雷管新增延时参数
//     */
//    private fun setCapAddDelay(){
//        val delay = CapDelayEntity()
//        delay.startDelay = 100
//        delay.holeDelay = 50
//        delay.rowDelay = 200
//        delay.delay1 = 20
//        delay.delay2 = 30
//        delay.curDelayModel = CapDelayEntity.DELAY.F1
//        DBLoader.loader.updateDelay(delay){}
//    }
//
//
//    /**
//     * 设置数据库加解密方式
//     */
//    private fun setDBConvertor(){
//        BlastKool.loader().setDBConvertor(DebugEncryptConvertor::class.java, object : Callback<CheckError> {
//            override fun run(m: CheckError) {
//                if (m.errorCode == CheckError.CHECK_SUCCESS) {
//                    startAppCheck()
//                } else {
//                    scanCapResult.text = m.errorMsg
//                }
//            }
//        })
//
//    }
//
//
//    /**
//     * app启动检测
//     */
//    private fun startAppCheck(){
//        QuickChecker.loader.checkStartApp(object : Callback<CheckError> {
//            override fun run(m: CheckError) {
//                if (m.errorCode == CheckError.CHECK_SUCCESS) {
//                    BlastLoader.startLoginCheck()
//                    getVersion()
//                } else {
//                    if(m is ProgressCheckError){
//                        scanCapResult.text = m.action
//                    } else {
//                        scanCapResult.text = m.errorMsg
//                    }
//                }
//            }
//        })
//    }
//
//
//
//
//
//    private fun getVersion(){
//        BlastKool.loader().version().getVersion(object : Callback<VersionResult> {
//            override fun run(m: VersionResult) {
//                scanCapResult.text =
//                    m.firmwareVersion + "  " + m.appVersion
//                setUploadService()
//               // doUpgradeVersion()
//            }
//        })
//    }
//
//
//    /**
//     * 设置上传爆破记录服务器
//     */
//    private fun setUploadService(){
//        BlastKool.loader().newSettingBuilder()
//            .setUploadMode(UploadBlastMode.XINXIN)
//            .build()
//    }
//
//
//    private fun doUpgradeVersion(){
//        AssetsFileKool.readAssetsBinFile(BlastLoader.getContext(), Consumer {
//            BlastKool.loader().upgrade()
//                .upgrade(27,it,object : OnResultProgressCallback<Int>{
//                    override fun onFailed(msg: String) {
//                        scanCapResult.text = msg
//                    }
//
//                    override fun onResult(result: Int) {
//                        scanCapResult.text = "version:$result"
//                    }
//
//                    override fun onProgressChanged(event: String, p: Int, max: Int) {
//                        scanCapResult.text = "$event $p %"
//                    }
//
//                })
//        })
//    }
//
//    /**
//     * 创建项目
//     */
//    fun onCreatePm(view: View) {
//        val pm = PmEntity()
//        pm.pmHtId = "12345789"
//        pm.isSelect = true
//        pm.pmHtName = "哈哈哈哈"
//        BlastKool.loader().db().insertPm(pm,object : Callback<Boolean>{
//            override fun run(m: Boolean) {
//                if(m) {
//                    newPmResult.text = JSONObject.toJSONString(pm)
//                } else {
//                    newPmResult.text = "新建失败"
//                }
//            }
//        })
//    }
//
//
//    /**
//     * 创建方案
//     */
//    fun onCreatePlan(view: View) {
//        val plan = PlanEntity()
//        plan.name = "火车站"
//        plan.isSelect = true
//        BlastKool.loader().db().insertPlan(plan) {
//            planId = plan.id.toString()
//            newPlanResult.text = JSONObject.toJSONString(plan)
//            onRegisterScanner()
//        }
//    }
//
//
//    /**
//     * 在线扫描
//     */
//    fun onScanCap(view: View) {
//        val curPm = BlastKool.loader().getCurPm()
//        if (curPm != null && !TextUtils.isEmpty(planId)) {
//            val caps = arrayListOf<CapRecordEntity>()
//            val repeatCaps = arrayListOf<CapRecordEntity>()
//            BlastKool.loader().read()
//                .read(planId, object : OnResultVoltageElectricProgressCallback<ReadResult> {
//                    override fun onFailed(msg: String) {
//                        scanCapResult.text = msg
//                    }
//
//                    override fun onResult(result: ReadResult) {
//                        BlastLog.e(JSONObject.toJSONString(result.info))
//                        caps.addAll(result.newCaps)
//                        repeatCaps.addAll(result.repeatCaps)
//                        scanCapResult.text = "扫描到${caps.size}发 重复${repeatCaps.size}发"
//                        BlastLog.e(scanCapResult.text.toString())
//                    }
//
//                    override fun onProgressChanged(event: String, p: Int, max: Int) {
//                        scanCapResult.text = event
//                    }
//
//                    override fun onVoltageElectricChanged(mVoltage: Float, mElectric: Float) {
//
//                    }
//
//                })
//        }
//    }
//
//
//    /**
//     * 下传雷管
//     */
//    fun onUnderCap(view: View) {
//        QuickChecker.loader.checkBlast(object : Callback<CheckError> {
//            override fun run(m: CheckError) {
//                if (m.errorCode == CheckError.CHECK_SUCCESS) {
//                    BlastKool.loader().under()
//                        .under(object : OnResultVoltageElectricProgressCallback<CommResult> {
//                            override fun onFailed(msg: String) {
//                                underCapResult.text = msg
//                            }
//
//                            override fun onResult(result: CommResult) {
//                                if (result.isSuccess) {
//                                    underCapResult.text = "下传成功"
//                                } else {
//                                    underCapResult.text = "下传失败 ${result.failedCaps.size}发异常"
//                                }
//                            }
//
//                            override fun onProgressChanged(event: String, p: Int, max: Int) {
//                                underCapResult.text = event
//                            }
//
//                            override fun onVoltageElectricChanged(
//                                mVoltage: Float,
//                                mElectric: Float
//                            ) {
//
//                            }
//
//                        })
//                } else {
//                    underCapResult.text = m.errorMsg
//                }
//            }
//        })
//    }
//
//    /**
//     * 雷管授权
//     */
//    fun onAuthCap(view: View) {
//        BlastKool.loader().db().querySelectCaps(object : Callback<MutableList<CapRecordEntity>> {
//            override fun run(m: MutableList<CapRecordEntity>) {
//                BlastKool.loader().quick()
//                    .auth(m, object : HttpCallback<MutableList<CapRecordEntity>> {
//                        override fun onFailed(err: String) {
//                            authCapResult.text = err
//                        }
//
//                        override fun onSuccess(msg: MutableList<CapRecordEntity>) {
//                            mapLayout.onRefresh()
//                            if (msg.isEmpty()) {
//                                authCapResult.text = "授权成功"
//                            } else {
//                                authCapResult.text = "有${msg.size}发未授权"
//                            }
//                        }
//
//                    })
//            }
//        })
//
//    }
//
//
//    /**
//     * 授权校时
//     */
//    fun onAuthTimeCapCheck(view: View) {
//        BlastKool.loader().under().cancel()
//        QuickChecker.loader.checkBlast(object : Callback<CheckError> {
//            override fun run(m: CheckError) {
//                if (m.errorCode == CheckError.CHECK_SUCCESS) {
//                    BlastKool.loader().authTimer()
//                        .authTimer(BlastParams.getCurMaxCapDelay(),
//                            object : OnResultVoltageElectricProgressCallback<CommResult> {
//                                override fun onFailed(msg: String) {
//                                    authCapCheckResult.text = msg
//                                }
//
//                                override fun onResult(result: CommResult) {
//                                    if (result.isSuccess) {
//                                        authCapCheckResult.text = "检验成功"
//                                    } else {
//                                        authCapCheckResult.text = "有${result.failedCaps.size}发检验异常"
//                                    }
//                                }
//
//                                override fun onProgressChanged(event: String, p: Int, max: Int) {
//                                    authCapCheckResult.text = event +"  $p %"
//                                }
//
//                                override fun onVoltageElectricChanged(
//                                    mVoltage: Float,
//                                    mElectric: Float
//                                ) {
//
//                                }
//
//                            })
//                } else {
//                    authCapCheckResult.text = m.errorMsg
//                }
//            }
//        })
//    }
//
//
//    /**
//     * 充电
//     */
//    fun onChargeCapCheck(view: View) {
//        BlastKool.loader().authTimer().cancel()
//        BlastKool.loader().netted().cancel()
//        QuickChecker.loader.checkBlast(object : Callback<CheckError> {
//            override fun run(m: CheckError) {
//                if (m.errorCode == CheckError.CHECK_SUCCESS) {
//                    BlastKool.loader().charge()
//                        .charge(object : OnResultVoltageElectricProgressCallback<CommResult> {
//                            override fun onFailed(msg: String) {
//                                chargeCapResult.text = msg
//                            }
//
//                            override fun onResult(result: CommResult) {
//                                if (result.isSuccess) {
//                                    chargeCapResult.text = "充电完成"
//                                } else {
//                                    chargeCapResult.text = "有${result.failedCaps.size}充电失败"
//                                }
//                            }
//
//                            override fun onProgressChanged(event: String, p: Int, max: Int) {
//                                chargeCapResult.text = "$event $p %"
//                            }
//
//                            override fun onVoltageElectricChanged(
//                                mVoltage: Float,
//                                mElectric: Float
//                            ) {
//
//                            }
//
//                        })
//                }
//            }
//        })
//    }
//
//
//    /**
//     * 起爆
//     */
//    fun onBlastCapCheck(view: View) {
//        BlastKool.loader().charge().cancel()
//        QuickChecker.loader.checkBlast(object : Callback<CheckError> {
//            override fun run(m: CheckError) {
//                if (m.errorCode == CheckError.CHECK_SUCCESS) {
//                    BlastKool.loader().blast()
//                        .blast(object : OnResultVoltageElectricProgressCallback<CommResult> {
//                            override fun onFailed(msg: String) {
//                                blastCapResult.text = msg
//                            }
//
//                            override fun onResult(result: CommResult) {
//                                if (result.isSuccess) {
//                                    blastCapResult.text = "爆破完成"
//                                } else {
//                                    blastCapResult.text = "有${result.failedCaps.size}爆破失败"
//                                }
//                            }
//
//                            override fun onProgressChanged(event: String, p: Int, max: Int) {
//                                blastCapResult.text = "$event $p %"
//                            }
//
//                            override fun onVoltageElectricChanged(
//                                mVoltage: Float,
//                                mElectric: Float
//                            ) {
//
//                            }
//
//                        })
//
//                }
//            }
//
//        })
//
//    }
//
//
//    /**
//     * 一键组网
//     */
//    fun onNettedCapCheck(view: View) {
//        BlastKool.loader().under().cancel()
//        BlastKool.loader().authTimer().cancel()
//        BlastKool.loader().netted()
//            .quick(object : NettedCallback {
//                override fun notifyVoltageElectricChanged(
//                    mVoltage: Float,
//                    mElectric: Float
//                ) {
//
//                }
//
//                override fun notifyProgressChanged(
//                    status: NettedStatus,
//                    progress: Int,
//                    action: String
//                ) {
//                    nettedCapResult.text = "$action $progress %"
//                }
//
//                override fun onFailed(msg: String) {
//                    nettedCapResult.text = msg
//                }
//
//                override fun onResult(result: CommResult) {
//                    if (result.isSuccess) {
//                        nettedCapResult.text = "组网完成"
//                    } else {
//                        nettedCapResult.text = "有 ${result.failedCaps.size} 发组网失败"
//                    }
//                }
//
//            })
//    }
//
//
//
//    private fun onRegisterScanner(){
//        BlastKool.loader().scan().open(planId, object : Callback<ScanResult> {
//            override fun run(m: ScanResult) {
//                if (m.status == 0) {
//                    scannerCapResult.text = JSONObject.toJSONString(m.cap)
//                } else {
//                    scannerCapResult.text = m.msg
//                }
//            }
//        })
//    }
//
//    /**
//     * 扫描头扫描
//     */
//    fun onScannerCapCheck(view: View) {
//        BlastKool.loader().scan().start()
//    }
//
//
//    /**
//     * 单发扫描
//     */
//    fun onACapScan(view: View) {
//        BlastKool.loader().scan()
//            .scanACap(planId, object : Callback<ScanResult> {
//                override fun run(m: ScanResult) {
//                    if (m.status == 0) {
//                        aCapResult.text = JSONObject.toJSONString(m.cap)
//                    } else {
//                        aCapResult.text = m.msg
//                    }
//                }
//            })
//    }
//
//
//    /**
//     * 单发检测
//     */
//    fun onACapCheck(view: View) {
//        BlastKool.loader().capCheck()
//            .check(object : OnResultCallback<ACapEntity> {
//                override fun onFailed(msg: String) {
//                    aCapCheckResult.text = msg
//                }
//
//                override fun onResult(result: ACapEntity) {
//                    aCapCheckResult.text = JSONObject.toJSONString(result)
//                }
//
//            })
//    }
//
//
//    /**
//     * 本地授权文件解析
//     */
//    fun onAuthFileParse(view: View) {
//        val path =
//            Environment.getExternalStorageDirectory().absolutePath + File.separator + "encrypt/3214568.txt"
//        BlastKool.loader().parseAuthFile("369211", File(path), object : ResultCallback<AuthEntity> {
//            override fun onFailed(err: String) {
//                authFileParseResult.text = err
//            }
//
//            override fun onSuccess(msg: AuthEntity) {
//                authFileParseResult.text = JSONObject.toJSONString(msg)
//            }
//
//        })
//    }
//
//    /**
//     * 离线地图
//     */
//    fun onOffLineMap(view: View) {
//        startActivity(Intent(this, OfflineMapActivity::class.java))
//    }
//
//    override fun onResume() {
//        super.onResume()
//        mapLayout.onResume()
//    }
//
//    override fun onPause() {
//        super.onPause()
//        mapLayout.onPause()
//    }
//
//    override fun onDestroy() {
//        super.onDestroy()
//        mapLayout.onDestroy()
//    }
//
//    override fun onSaveInstanceState(outState: Bundle) {
//        super.onSaveInstanceState(outState)
//        mapLayout.onSaveInstanceState(outState)
//    }
//
//    /**
//     * 登录
//     */
//    fun onLogin(view: View) {
//        BlastKool.loader().setMacImei("b4:48:3d:5a:5c:13","864881042855483")
//        BlastKool.loader().quick().login("110101199003070652", "123456", true,
//            object : HttpCallback<UserEntity> {
//                override fun onFailed(err: String) {
//                    loginResult.text = err
//                }
//
//                override fun onSuccess(msg: UserEntity) {
//                    loginResult.text = JSONObject.toJSONString(msg)
//                }
//
//            })
//    }
//
//    /**
//     * 上传设备信息
//     */
//    fun onUploadDev(view: View) {
//        BlastKool.loader().http()
//            .uploadDeviceInfo(true, object : HttpCallback<Boolean> {
//                override fun onFailed(err: String) {
//                    uploadDevResult.text = err
//                }
//
//                override fun onSuccess(msg: Boolean) {
//                    uploadDevResult.text = if (msg) "上传成功" else "上传失败"
//                }
//
//            })
//    }
//
//    /**
//     * 获取设备信息
//     */
//    fun onDeviceInfo(view: View) {
//        BlastKool.loader().setMacImei("b4:48:3d:5a:5c:13","864881042855483")
//        BlastKool.loader().quick().getDeviceInfo(true, object : HttpCallback<DeviceInfoEntity> {
//            override fun onFailed(err: String) {
//                deviceResult.text = err
//            }
//
//            override fun onSuccess(msg: DeviceInfoEntity) {
//                deviceResult.text = JSONObject.toJSONString(msg)
//            }
//
//        })
//    }
//
//    /**
//     * 获取app信息
//     */
//    fun onAppInfo(view: View) {
//        BlastKool.loader().setMacImei("b4:48:3d:5a:5c:13","864881042855483")
//        BlastKool.loader().http().loadApp(true, object : HttpCallback<AppDataEntity> {
//            override fun onFailed(err: String) {
//                appInfoResult.text = err
//            }
//
//            override fun onSuccess(msg: AppDataEntity) {
//                appInfoResult.text = JSONObject.toJSONString(msg)
//            }
//
//        })
//    }
//
//    /**
//     * 序列号获取授权信息
//     */
//    fun onCodeAuth(view: View) {
//        BlastKool.loader().http().loadAuthByCode("147258", true, object : HttpCallback<AuthEntity> {
//            override fun onFailed(err: String) {
//                codeAuthResult.text = err
//            }
//
//            override fun onSuccess(msg: AuthEntity) {
//                codeAuthResult.text = JSONObject.toJSONString(msg)
//            }
//
//        })
//    }
//
//
//    /**
//     * 上传爆破记录
//     */
//    fun onUploadBlast(view: View) {
//        BlastKool.loader().db().queryBlast(1, object : Callback<MutableList<BlastEntity>> {
//            override fun run(m: MutableList<BlastEntity>) {
//                if (m.isNotEmpty()) {
//                    BlastKool.loader().quick()
//                        .uploadBlast(m[0], true, object : HttpCallback<Boolean> {
//                            override fun onFailed(err: String) {
//                                uploadBlastResult.text = err
//                            }
//
//                            override fun onSuccess(msg: Boolean) {
//                                uploadBlastResult.text = if (msg) "上传成功" else "上传失败"
//                            }
//
//                        })
//                }
//            }
//
//        })
//    }
//
//    fun onDeleteCap(view: View) {
//        BlastKool.loader().db().queryCapsByPlan(planId,object : Callback<ReadResult>{
//            override fun run(m: ReadResult) {
//                BlastKool.loader().db().deleteCap(arrayListOf(m.newCaps[0],m.newCaps[1]),object : Runnable{
//                    override fun run() {
//                        BlastLog.e("delete finish")
//                    }
//                })
//            }
//        })
//    }
//
//
//}